package ar.edu.utn.frsf.tpae.a2012.g01.model;

import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Representa los clientes
 * 
 * @author HP
 *
 */
@Entity
@Table(name = "cli")
public class Cliente {
	@Id
	@Column(name = "cli_id")
	@SequenceGenerator(name = "SecuenciaCliente", sequenceName = "seq_cli", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SecuenciaCliente")
	private int id;
	@Column(name = "cli_nro", unique = true)
	private String numero;
	@Column(name = "cli_nom")
	private String nombre;
	@Column(name = "cli_ape")
	private String apellido;
	@Column(name = "cli_dni")
	private String dni;
	@Column(name = "cli_cuil")
	private String cuil;
	@Column(name = "cli_fech_alta")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaAlta;
	@Column(name = "cli_dir_pos")
	private String direccionPostal;
	@Column(name = "cli_tel")
	private String telefono;
	@Column(name = "cli_mail")
	private String email;
	@OneToMany(mappedBy = "cuentaCliente")
	private List<Cuenta> cuentas;

	/**
	 * Constructor por defecto
	 */
	public Cliente() {
		id= 0;
	}

	/**
	 * Constructor
	 * 
	 * @param numero
	 * @param nombre
	 * @param apellido
	 * @param dni
	 * @param cuil
	 * @param fechaAlta
	 * @param direccionPostal
	 * @param telefono
	 * @param email
	 */
	public Cliente(String numero, String nombre, String apellido, String dni,
			String cuil, Date fechaAlta, String direccionPostal,
			String telefono, String email) {
		this.numero = numero;
		this.nombre = nombre;
		this.apellido = apellido;
		this.dni = dni;
		this.cuil = cuil;
		this.fechaAlta = fechaAlta;
		this.direccionPostal = direccionPostal;
		this.telefono = telefono;
		this.email = email;
		id= 0;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	public String getCuil() {
		return cuil;
	}

	public void setCuil(String cuil) {
		this.cuil = cuil;
	}

	public Date getFechaAlta() {
		return fechaAlta;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public String getDireccionPostal() {
		return direccionPostal;
	}

	public void setDireccionPostal(String direccionPostal) {
		this.direccionPostal = direccionPostal;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public List<Cuenta> getCuentas() {
		return cuentas;
	}

	public void setCuentas(List<Cuenta> cuentas) {
		this.cuentas = cuentas;
	}

}
